package com.jixi.controller;

import com.jixi.common.result.PageResult;
import com.jixi.common.result.Result;
import com.jixi.pojo.entity.OrderDaily;
import com.jixi.service.OrderDailyService;
import io.swagger.v3.oas.annotations.Operation;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.IOException;

@Slf4j
@RestController
@RequestMapping("/education")
public class OrderDailyController {
	
	@Autowired
	private OrderDailyService orderDailyService;
	
	/**
	 * 日订餐订单列表
	 *
	 * @param pageNum         页码
	 * @param pageSize        每页数量
	 * @param orderNumber     订单编号
	 * @param schoolId        学校id
	 * @param companyId       餐饮公司id
	 * @param orderDateStatus 订单状态
	 * @param timeValue       时间（天）
	 * @return 日订餐订单列表
	 */
	@GetMapping("/orderDaily/list")
	public Result<PageResult> orderDailyList(
			Integer pageNum,
			Integer pageSize,
			String orderNumber,
			Long schoolId,
			Long companyId,
			Integer orderDateStatus,
			String timeValue
	) {
		return orderDailyService.orderDailyPage(pageNum,pageSize,orderNumber,schoolId,companyId,orderDateStatus,timeValue);
	}
	
	/**
	 * 通过id查日订餐订单详情
	 *
	 * @param orderDateId 日订餐订单id
	 * @return 日订餐订单详情
	 */
	@GetMapping("/orderDaily/info/id")
	public Result<OrderDaily> getInfoById(Long orderDateId) {
		OrderDaily orderDaily = orderDailyService.getOrderDailyInfoById(orderDateId);
		return Result.success(orderDaily);
	}
	
	/**
	 * 通过订单编号查日订餐订单详情
	 *
	 * @param orderNumber 订单编号
	 * @return 日订餐订单详情
	 */
	@GetMapping("/orderDaily/info/number")
	public Result<OrderDaily> getInfoByNumber(String orderNumber) {
		OrderDaily orderDaily = orderDailyService.getOrderDailyInfoByNumber(orderNumber);
		return Result.success(orderDaily);
	}
	
	/**
	 * 统计各餐饮公司各学校按天的出餐统计信息
	 *
	 * @param pageNum   页码
	 * @param pageSize  每页数量
	 * @param companyId 餐饮公司id
	 * @param schoolId  学校id
	 * @param timeValue 时间（天）
	 * @param status    状态
	 * @return 各餐饮公司各学校按天的出餐统计信息
	 */
	@GetMapping("/order/companyMeal")
	public Result<PageResult> companyMeal(
			Integer pageNum,
			Integer pageSize,
			Long companyId,
			Long schoolId,
			String timeValue,
			Integer status
	) {
		return orderDailyService.CompanyMealOrderPage(pageNum,pageSize,companyId,schoolId,timeValue,status);
	}
	
	/**
	 * 3导出各公司的各学校按月统计的学校订餐的订餐量和总金额统计excel
	 *
	 * */
	@GetMapping("/order/companyMeal/download")
	@Operation(summary = "各公司的各学校按月统计的学校订餐的订餐量和总金额统计")
	public void downloadMonthReturnOrder(HttpServletResponse response, String timeValue) throws IOException {
		orderDailyService.downloadCompanyMealOrderPage(response, timeValue);
	}
}
